#include "proc/cpu.h"
#include "riscv.h"
#include "lib/lock.h"

static cpu_t cpus[NCPU];



cpu_t* mycpu1(void) 
{
  int id = mycpuid();
  cpu_t *c = &cpus[id];
  return c;
}

cpu_t* mycpu(void)
{
  //gpt代码
  int id = mycpuid(); // 获取当前 CPU 的 ID
    if (id < 0 || id >= NCPU) {
        // 如果 ID 超出范围，返回 NULL
        return NULL;
    }
    return &cpus[id]; // 返回指向当前 CPU 的指针

}

int mycpuid(void) 
{
    int id = r_tp();
  return id;
  //仿照xv6直接使用r_tp汇编获取id
}

proc_t* myproc(void)
{
  push_off();
  cpu_t* p =mycpu();
  pop_off();
  return p->proc;
}
